import React, {Component} from 'react';
import Markdown from 'react-markdown';
import {Anchor, Row, Col} from 'antd';

const {Link} = Anchor;


class JsPage extends Component {
    constructor(props) {
        super(props);
    }




    render() {

        return (
            <div style={{background: "#c0d2bc"}}>
                <Row>
                    <Col span={19}>
                        <Markdown source={"四舍五入其实在金融方面运用的非常多，尤其是银行的利息。我们都知道银行的盈利渠道主要是利息差，它从储户手里收集资金，然后放贷出去，期间产生的利息差就是银行所获得的利润。如果我们采用平常四舍五入的规则话，这里采用每10笔存款利息计算作为模型，如下：\n" +
                        "\n" +
                        "四舍：0.000、0.001、0.002、0.003、0.004。这些舍的都是银行赚的钱。\n" +
                        "\n" +
                        "五入：0.005、0.006、0.007、0.008、0.009。这些入的都是银行亏的钱，分别为：0.005、0.004、.003、0.002、0.001。\n" +
                        "\n" +
                        "所以对于银行来说它的盈利应该是0.000 + 0.001 + 0.002 + 0.003 + 0.004 - 0.005 - 0.004 - 0.003 - 0.002 - 0.001 = -0.005。从结果中可以看出每10笔的利息银行可能就会损失0.005元，千万别小看这个数字，这对于银行来说就是一笔非常大的损失。面对这个问题就产生了如下的银行家涉入法了。该算法是由美国银行家提出了，主要用于修正采用上面四舍五入规则而产生的误差。如下：\n" +
                        "\n" +
                        "舍去位的数值小于5时，直接舍去。\n" +
                        "\n" +
                        "舍去位的数值大于5时，进位后舍去。\n" +
                        "\n" +
                        "当舍去位的数值等于5时，若5后面还有其他非0数值，则进位后舍去，若5后面是0时，则根据5前一位数的奇偶性来判断，奇数进位，偶数舍去。\n" +
                        "\n" +
                        "对于上面的规则我们举例说明\n" +
                        "\n" +
                        "         11.556 = 11.56 ------六入\n" +
                        "\n" +
                        "         11.554 = 11.55 -----四舍\n" +
                        "\n" +
                        "         11.5551 = 11.56 -----五后有数进位\n" +
                        "\n" +
                        "         11.545 = 11.54 -----五后无数，若前位为偶数应舍去\n" +
                        "\n" +
                        "         11.555 = 11.56 -----五后无数，若前位为奇数应进位\n" +
                        "\n" +
                        "下面实例是使用银行家舍入法：\n" +
                        "\n" +
                        "    BigDecimal d = new BigDecimal(11.545);      //存款\n" +
                        "    BigDecimal i = d.setScale(2,RoundingMode.HALF_EVEN);     //使用银行家算法\n" +
                        "    System.out.println(i.doubleValue());\n" +
                        "    //11.54 ,使用0.645 无效\n" +
                        "    \n在这里使用BigDecimal ，并且采用setScale方法来设置精确度，同时使用RoundingMode.HALF_UP表示使用最近数字舍入法则来近似计算。BigDecimal和四舍五入是绝妙的搭配。   \n" +
                        "\n" +
                        "在上面简单地介绍了银行家舍入法，目前java支持7中舍入法：\n" +
                        "\n" +
                        "         1、 ROUND_UP：远离零方向舍入。向绝对值最大的方向舍入，只要舍弃位非0即进位。\n" +
                        "\n" +
                        "         2、 ROUND_DOWN：趋向零方向舍入。向绝对值最小的方向输入，所有的位都要舍弃，不存在进位情况。\n" +
                        "\n" +
                        "         3、 ROUND_CEILING：向正无穷方向舍入。向正最大方向靠拢。若是正数，舍入行为类似于ROUND_UP，若为负数，舍入行为类似于ROUND_DOWN。Math.round()方法就是使用的此模式。\n" +
                        "\n" +
                        "         4、 ROUND_FLOOR：向负无穷方向舍入。向负无穷方向靠拢。若是正数，舍入行为类似于ROUND_DOWN；若为负数，舍入行为类似于ROUND_UP。\n" +
                        "\n" +
                        "         5、 HALF_UP：最近数字舍入(5进)。这是我们最经典的四舍五入。\n" +
                        "\n" +
                        "         6、 HALF_DOWN：最近数字舍入(5舍)。在这里5是要舍弃的。\n" +
                        "\n" +
                        "         7、 HAIL_EVEN：银行家舍入法。"}/>

                        <h3 id="ref"> 参考 </h3>
                        <Markdown source={"https://blog.csdn.net/xlgen157387/article/details/22280451/"}/>

                    </Col>
                    <Col span={5}>
                        <Anchor showInkInFixed="true" style={{background: "#ebefe0"}}>
                            <Link href="#ref" title="参考"/>
                        </Anchor>
                    </Col>
                </Row>
            </div>
        );
    }
}

export default JsPage;